Customizing Adaptive Software to Object-Oriented Software Using Grammars
نویسندگان
چکیده
Numerous researchers have pointed out that object-oriented programs are easier to extend than programs which are not written in an object-oriented style, however object-oriented programs are still rigid to adapt and maintain. This paper builds on an extension of object-oriented programming which allows to write more extensible programs, called adaptive programs, without knowing the details of the input language. A speciic input language is selected after the program has been written by specifying a grammar, called class dictionary. This paper formally studies class dictionaries and how they help with adaptive programming. A class dictionary is a very high-level language which is 1. concise and expressive to describe important aspects of object-oriented designs and programs, 2. the basis for a theory of object-oriented software engineering, 3. the basis for tools for the object-oriented paradigm. A class dictionary is mapped into classes of an object-oriented programming language, for example, C++, CLOS etc. A class dictionary deenes both a set of objects and a set of sentences (a language). We derive a set of restrictions on class dictionaries which permit a simple printing algorithm and its inverse, a parsing algorithm, to be bijection functions between objects and sentences. We review propagation patterns for describing adaptive object-oriented software at a higher level of abstraction than the one used by today's object-oriented programming languages. A propagation pattern is an adaptive program which deenes a family of programs. From the family, we can select a member by giving a class dictionary. The theory presented in this paper has been successfully implemented and used in the Demeter Tools/C++, a set of tools which facilitate evolution during the software development process.
منابع مشابه
Conditional Adaptive Star Grammars
The precise specification of software models is a major concern in the model-driven design of object-oriented software. Models are commonly given as graph-like diagrams so that graph grammars are a natural candidate for specifying them. However, context-free graph grammars are not powerful enough to specify all static properties of a model. Even the recently proposed adaptive star grammars cann...
متن کاملAvailability evaluation of Software architecture of object oriented Style using coloured Petri nets
Software architecture is one of the most fundamental products in the process of software development in the areas of behavioral or non- behavioral features like availability or transformability change. There are different ways to evaluate software architecture one of which is the creation of application model. An executable model of software architecture is an official description of architectu...
متن کاملGenerating Instance Graphs from Class Diagrams with Adaptive Star Grammars
In model-driven software engineering, class diagrams are used to define the structure of object-oriented software and valid object configurations, i.e., what objects may occur in a program and how they are related. Object configurations are essentially graphs, so that class diagrams define graph languages. Class diagrams are declarative, i.e., it is quite easy to check whether a graph is an ins...
متن کاملCustomizing Real-Time Operating Systems with Aspect-Oriented Programming Framework
There is a growing demand for rapidly customizing a complex software system such as a real-time operating system (RTOS) using existing module libraries. While object-oriented and/or component-based software technologies are used for this, they are not fully adequate for RTOS customization since RTOSes contain many crosscutting features that interfere with modularization. Aspect-oriented program...
متن کاملDeclarative Semantics in Object-Oriented Software Development - A Taxonomy and Survey
One of the modern paradigms to develop an application is object oriented analysis and design. In this paradigm, there are several objects and each object plays some specific roles in applications. In an application, we must distinguish between procedural semantics and declarative semantics for their implementation in a specific programming language. For the procedural semantics, we can write a ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- Int. J. Found. Comput. Sci.
دوره 5 شماره
صفحات -
تاریخ انتشار 1994